suppressPackageStartupMessages({
  library(tidyverse)
  library(lubridate)
  library(modelr)
  library(broom)
  library(lmtest)
  library(sandwich)
  library(viridis)
})
pm2 <- read_csv("data/pm2.csv", show_col_types = FALSE)
pm2 <- pm2 %>% 
  mutate(
    fnr = str_sub(knr, 1,2),
    aar_f = str_sub(aar)
  )
head(pm2)
<<<<<<< HEAD =======
>>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186
pm2 %>% 
  mutate(
    fnr = parse_factor(fnr, levels = fnr),
    aar_f = parse_factor(aar_f, levels = aar_f)
  )
<<<<<<< HEAD =======
>>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186
pm2 <- pm2 %>% 
  mutate(
    Trade_pc_100K = Trade_p/100000
  ) 
head(pm2, n = 4)
<<<<<<< HEAD =======
>>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186
tibble("knr", "fnr", "aar_f", "Trade_pc_100k")
<<<<<<< HEAD =======
>>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186

#Modell

mod1 <- 'pm2 ~ aar_f + Total_ya_p + inc_k1 + inc_k5 + uni_k_mf + uni_l_mf + Trade_pc_100K'
lm1 <- lm(mod1, data = pm2, subset = complete.cases(pm2))

Vi legger inn residualene fra den linære modellen

pm2 %>% 
add_residuals(lm1)
head(pm2, n = 4)
<<<<<<< HEAD <<<<<<< HEAD ======= ======= >>>>>>> 9d191ee1d48e508193ed3703a38d953fa7f54d64
head(pm2, n = 4)
>>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186
summary(lm1)

ut i fra verdien på års koeffisientene kan vi lese at det er en økning på o,1% fra 2010 til 2017. vi ser en økning fra år til år.

ut i fra vår kunnskap er vi enige om at de er som forventet

Heteroskedastisitet

bptest(lm1)

Ja vi har problemer med heteroskedasiteten her pga at verdien er for høy.

Rapportere robuste standard feil og tilhørende robuste t-verdier

coeftest(lm1)
<<<<<<< HEAD =======

t test of coefficients:

                Estimate Std. Error  t value  Pr(>|t|)    
(Intercept)   -20400.742   2663.022  -7.6607 2.790e-14 ***
aar_f2009        104.150    244.767   0.4255 0.6705118    
aar_f2010        908.129    245.156   3.7043 0.0002174 ***
aar_f2011       1663.926    245.857   6.7679 1.685e-11 ***
aar_f2012       2240.475    247.095   9.0672 < 2.2e-16 ***
aar_f2013       2869.297    248.315  11.5551 < 2.2e-16 ***
aar_f2014       2863.224    250.537  11.4283 < 2.2e-16 ***
aar_f2015       3525.223    253.083  13.9291 < 2.2e-16 ***
aar_f2016       4274.990    255.812  16.7114 < 2.2e-16 ***
aar_f2017       5146.326    258.498  19.9086 < 2.2e-16 ***
Total_ya_p       582.436     38.941  14.9568 < 2.2e-16 ***
inc_k1          -376.989     30.291 -12.4455 < 2.2e-16 ***
inc_k5           194.354     22.871   8.4979 < 2.2e-16 ***
uni_k_mf         -82.023     29.424  -2.7876 0.0053574 ** 
uni_l_mf        1206.857     42.219  28.5853 < 2.2e-16 ***
Trade_pc_100K    871.993    218.422   3.9922 6.768e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
>>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186
vcovHC(lm1)
<<<<<<< HEAD <<<<<<< HEAD =======
              (Intercept)    aar_f2009   aar_f2010   aar_f2011   aar_f2012    aar_f2013
(Intercept)    9297989.37 -26519.17426 -34751.3931 -64358.9799 -88195.7750 -93332.21682
aar_f2009       -26519.17  42579.51052  22306.6988  22379.0191  22461.1963  22562.49160
aar_f2010       -34751.39  22306.69876  41857.2132  22643.0594  22816.5776  23016.04825
aar_f2011       -64358.98  22379.01911  22643.0594  45210.7304  23406.9880  23690.13111
aar_f2012       -88195.78  22461.19628  22816.5776  23406.9880  47055.4187  24270.53282
aar_f2013       -93332.22  22562.49160  23016.0483  23690.1311  24270.5328  49220.90256
aar_f2014      -128032.51  22647.20878  23232.1454  24076.5421  24791.9383  25428.88146
aar_f2015      -177893.27  22637.74268  23267.9132  24237.7165  25055.0255  25755.44730
aar_f2016      -229170.12  22623.80635  23323.0788  24446.1520  25385.7301  26135.55952
aar_f2017      -231919.09  22624.44448  23352.3686  24515.4258  25408.7607  26169.54649
Total_ya_p     -134378.95     89.41919    277.8154    681.8928   1112.5721   1311.74280
inc_k1          -48847.48    -46.78668   -117.7882    188.8338    193.4766    -23.25608
inc_k5          -26724.41    110.78484    126.8286    397.1950    455.5137    419.80206
uni_k_mf        -23624.40   -129.42390   -212.3787   -468.5265   -572.7298   -695.90501
uni_l_mf         79213.28    -45.36231   -237.3954   -324.3915   -491.9711   -632.27758
Trade_pc_100K   145568.84    497.16540   1261.8579    987.3383    936.1196   2510.69810
                 aar_f2014    aar_f2015    aar_f2016    aar_f2017    Total_ya_p       inc_k1
(Intercept)   -128032.5143 -177893.2733 -229170.1243 -231919.0869 -134378.94615 -48847.47803
aar_f2009       22647.2088   22637.7427   22623.8064   22624.4445      89.41919    -46.78668
aar_f2010       23232.1454   23267.9132   23323.0788   23352.3686     277.81538   -117.78822
aar_f2011       24076.5421   24237.7165   24446.1520   24515.4258     681.89276    188.83384
aar_f2012       24791.9383   25055.0255   25385.7301   25408.7607    1112.57212    193.47663
aar_f2013       25428.8815   25755.4473   26135.5595   26169.5465    1311.74280    -23.25608
aar_f2014       53475.4422   27156.8674   27482.0673   27045.3309    1662.72401    237.99318
aar_f2015       27156.8674   63394.1122   28309.5656   27655.2812    2349.75511    438.18220
aar_f2016       27482.0673   28309.5656   75087.4602   28071.1160    3130.99055    706.91052
aar_f2017       27045.3309   27655.2812   28071.1160   89424.5717    3266.65535    723.96826
Total_ya_p       1662.7240    2349.7551    3130.9906    3266.6554    2167.75020    426.37025
inc_k1            237.9932     438.1822     706.9105     723.9683     426.37025    801.89764
inc_k5            750.9501     927.6337    1166.2786    1178.1709     133.21845    496.44438
uni_k_mf         -198.2867     136.4018    -110.1222    -816.2879      51.21924    158.26504
uni_l_mf        -2195.0185   -3034.7846   -2540.7427   -1110.7783    -614.02732   -500.25996
Trade_pc_100K    2684.4013    2764.2300     282.6406    1862.4720   -1619.34164  -2293.03278
                   inc_k5     uni_k_mf    uni_l_mf Trade_pc_100K
(Intercept)   -26724.4053 -23624.40438 79213.27980   145568.8365
aar_f2009        110.7848   -129.42390   -45.36231      497.1654
aar_f2010        126.8286   -212.37867  -237.39541     1261.8579
aar_f2011        397.1950   -468.52650  -324.39148      987.3383
aar_f2012        455.5137   -572.72977  -491.97106      936.1196
aar_f2013        419.8021   -695.90501  -632.27758     2510.6981
aar_f2014        750.9501   -198.28673 -2195.01848     2684.4013
aar_f2015        927.6337    136.40176 -3034.78456     2764.2300
aar_f2016       1166.2786   -110.12216 -2540.74265      282.6406
aar_f2017       1178.1709   -816.28793 -1110.77830     1862.4720
Total_ya_p       133.2185     51.21924  -614.02732    -1619.3416
inc_k1           496.4444    158.26504  -500.25996    -2293.0328
inc_k5           547.3448    104.53767  -690.28424     -115.1786
uni_k_mf         104.5377   1515.96690 -2398.54359    -2608.7728
uni_l_mf        -690.2842  -2398.54359  5463.68941      651.9410
Trade_pc_100K   -115.1786  -2608.77275   651.94105    60897.1826
=======
              (Intercept)    aar_f2009   aar_f2010   aar_f2011   aar_f2012    aar_f2013    aar_f2014    aar_f2015
(Intercept)    9297989.37 -26519.17426 -34751.3931 -64358.9799 -88195.7750 -93332.21682 -128032.5143 -177893.2733
aar_f2009       -26519.17  42579.51052  22306.6988  22379.0191  22461.1963  22562.49160   22647.2088   22637.7427
aar_f2010       -34751.39  22306.69876  41857.2132  22643.0594  22816.5776  23016.04825   23232.1454   23267.9132
aar_f2011       -64358.98  22379.01911  22643.0594  45210.7304  23406.9880  23690.13111   24076.5421   24237.7165
aar_f2012       -88195.78  22461.19628  22816.5776  23406.9880  47055.4187  24270.53282   24791.9383   25055.0255
aar_f2013       -93332.22  22562.49160  23016.0483  23690.1311  24270.5328  49220.90256   25428.8815   25755.4473
aar_f2014      -128032.51  22647.20878  23232.1454  24076.5421  24791.9383  25428.88146   53475.4422   27156.8674
aar_f2015      -177893.27  22637.74268  23267.9132  24237.7165  25055.0255  25755.44730   27156.8674   63394.1122
aar_f2016      -229170.12  22623.80635  23323.0788  24446.1520  25385.7301  26135.55952   27482.0673   28309.5656
aar_f2017      -231919.09  22624.44448  23352.3686  24515.4258  25408.7607  26169.54649   27045.3309   27655.2812
Total_ya_p     -134378.95     89.41919    277.8154    681.8928   1112.5721   1311.74280    1662.7240    2349.7551
inc_k1          -48847.48    -46.78668   -117.7882    188.8338    193.4766    -23.25608     237.9932     438.1822
inc_k5          -26724.41    110.78484    126.8286    397.1950    455.5137    419.80206     750.9501     927.6337
uni_k_mf        -23624.40   -129.42390   -212.3787   -468.5265   -572.7298   -695.90501    -198.2867     136.4018
uni_l_mf         79213.28    -45.36231   -237.3954   -324.3915   -491.9711   -632.27758   -2195.0185   -3034.7846
Trade_pc_100K   145568.84    497.16540   1261.8579    987.3383    936.1196   2510.69810    2684.4013    2764.2300
                 aar_f2016    aar_f2017    Total_ya_p       inc_k1      inc_k5     uni_k_mf    uni_l_mf Trade_pc_100K
(Intercept)   -229170.1243 -231919.0869 -134378.94615 -48847.47803 -26724.4053 -23624.40438 79213.27980   145568.8365
aar_f2009       22623.8064   22624.4445      89.41919    -46.78668    110.7848   -129.42390   -45.36231      497.1654
aar_f2010       23323.0788   23352.3686     277.81538   -117.78822    126.8286   -212.37867  -237.39541     1261.8579
aar_f2011       24446.1520   24515.4258     681.89276    188.83384    397.1950   -468.52650  -324.39148      987.3383
aar_f2012       25385.7301   25408.7607    1112.57212    193.47663    455.5137   -572.72977  -491.97106      936.1196
aar_f2013       26135.5595   26169.5465    1311.74280    -23.25608    419.8021   -695.90501  -632.27758     2510.6981
aar_f2014       27482.0673   27045.3309    1662.72401    237.99318    750.9501   -198.28673 -2195.01848     2684.4013
aar_f2015       28309.5656   27655.2812    2349.75511    438.18220    927.6337    136.40176 -3034.78456     2764.2300
aar_f2016       75087.4602   28071.1160    3130.99055    706.91052   1166.2786   -110.12216 -2540.74265      282.6406
aar_f2017       28071.1160   89424.5717    3266.65535    723.96826   1178.1709   -816.28793 -1110.77830     1862.4720
Total_ya_p       3130.9906    3266.6554    2167.75020    426.37025    133.2185     51.21924  -614.02732    -1619.3416
inc_k1            706.9105     723.9683     426.37025    801.89764    496.4444    158.26504  -500.25996    -2293.0328
inc_k5           1166.2786    1178.1709     133.21845    496.44438    547.3448    104.53767  -690.28424     -115.1786
uni_k_mf         -110.1222    -816.2879      51.21924    158.26504    104.5377   1515.96690 -2398.54359    -2608.7728
uni_l_mf        -2540.7427   -1110.7783    -614.02732   -500.25996   -690.2842  -2398.54359  5463.68941      651.9410
Trade_pc_100K     282.6406    1862.4720   -1619.34164  -2293.03278   -115.1786  -2608.77275   651.94105    60897.1826
>>>>>>> 9d191ee1d48e508193ed3703a38d953fa7f54d64 >>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186

Flytter residualene fra lm1 til datasettet pm2

pm2 <- pm2 %>%
  add_residuals(lm1)

lager ny variabel

pm2 <- pm2 %>%
mutate(aar_d = make_date(aar))

Vi filterer ut fylkene Østfold, Akershus, Oslo, Rogaland og Hordaland

pm2 <- pm2 %>%
mutate(fylke = substr(knr, start = 1, stop = 2))
<<<<<<< HEAD <<<<<<< HEAD
# Her overskriver dere pm2. Lager heller en ny pm2_red
# Bruker pm2_red for å lage plottene
=======

# Her overskriver dere pm2. Lager heller en ny pm2_red
>>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186
=======

# Her overskriver dere pm2. Lager heller en ny pm2_red
# Bruker pm2_red for å lage plottene
>>>>>>> 9d191ee1d48e508193ed3703a38d953fa7f54d64
pm2_red <- pm2 %>% 
  filter(fylke %in% c("01", "02", "03", "11", "12"))
Error: Problem with `filter()` input `..1`.
i Input `..1` is `fylke %in% c("01", "02", "03", "11", "12")`.
x object 'fylke' not found
Run `rlang::last_error()` to see where the error occurred.

Oppgave 7 til 10

# pm2_red %>% 
#   unnest(c(fylke)) %>% 
#   group_by(fylke, aar_d) %>% 
#   summarise(mean_fylke = mean(resid)) %>% 
#   ggplot(mapping = aes(x = aar_d, y = mean_fylke, colour = fylke)) +
#   geom_line(lwd = 1) +
#   geom_hline(yintercept = 0, colour = "white") +
#   theme(legend.position = "bottom")
<<<<<<< HEAD <<<<<<< HEAD ======= >>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186 ======= >>>>>>> 9d191ee1d48e508193ed3703a38d953fa7f54d64
pm2_red %>%
  filter(fylke %in% c("01", "02", "03", "11", "12")) %>%
  unnest(c(fylke)) %>%
  group_by (fylke, aar_d) %>%
  summarise(mean_fylke = mean(resid)) %>%
  ggplot(aes(x=aar_d, y=mean_fylke, colour = fylke)) +
  geom_line(lwd=1) +
  geom_hline(yintercept = 0, colour = "black") +
  theme(legend.position = "bottom")
<<<<<<< HEAD =======
`summarise()` has grouped output by 'fylke'. You can override using the `.groups` argument.

>>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186

#Dummy fylke og år

Vi innfører en dummy for hvert fylke

<<<<<<< HEAD <<<<<<< HEAD
# Nå har vi hel pm2 å bruke
mod2 <- 'pm2 ~ fnr*aar_f + Total_ya_p + inc_k1 + inc_k5 + uni_k_mf + uni_l_mf + Trade_pc_100K'
=======
mod2 <- 'pm2 ~ fnr*aar_f + Total_ya_p + inc_k1 + inc_k5 + uni_k_mf + uni_l_mf + Trade_pc_100K'
>>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186 =======
# Nå har vi hel pm2 å bruke
mod2 <- 'pm2 ~ fnr*aar_f + Total_ya_p + inc_k1 + inc_k5 + uni_k_mf + uni_l_mf + Trade_pc_100K'
>>>>>>> 9d191ee1d48e508193ed3703a38d953fa7f54d64

Vi genererer lm 2 fra modell 2 og datasettet pm2

lm2 <- lm(mod2, data = pm2)
summary(lm2)
<<<<<<< HEAD <<<<<<< HEAD ======= ======= >>>>>>> 9d191ee1d48e508193ed3703a38d953fa7f54d64

Call:
lm(formula = mod2, data = pm2)

Residuals:
   Min     1Q Median     3Q    Max 
 -8546  -1191     32   1198   8328 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)     -21200.688   2521.645  -8.407  < 2e-16 ***
fnr02            -1482.789    702.970  -2.109 0.035045 *  
fnr03             3248.234   2190.443   1.483 0.138260    
fnr04            -1049.219    774.264  -1.355 0.175537    
fnr05            -1937.388    758.293  -2.555 0.010696 *  
fnr06            -2172.731    772.094  -2.814 0.004941 ** 
fnr07             -737.995   1080.348  -0.683 0.494620    
fnr08            -3213.279    878.620  -3.657 0.000262 ***
fnr09            -1219.813    913.691  -1.335 0.182020    
fnr10             -281.375    852.265  -0.330 0.741323    
fnr11             -565.360    771.927  -0.732 0.464012    
fnr12             -903.071    742.464  -1.216 0.224012    
fnr14            -3339.829   1182.013  -2.826 0.004768 ** 
fnr15            -3619.198    715.832  -5.056 4.69e-07 ***
fnr16            -1093.217    759.677  -1.439 0.150296    
fnr17            -2005.965    917.216  -2.187 0.028860 *  
fnr18            -1567.503    774.530  -2.024 0.043126 *  
fnr19            -2856.881   1326.142  -2.154 0.031341 *  
fnr20            -2656.315   1180.088  -2.251 0.024500 *  
aar_f2009           94.009    744.240   0.126 0.899496    
aar_f2010          417.129    744.379   0.560 0.575290    
aar_f2011         1280.914    744.731   1.720 0.085597 .  
aar_f2012         1455.525    745.679   1.952 0.051088 .  
aar_f2013         2479.533    746.367   3.322 0.000910 ***
aar_f2014         2795.831    747.254   3.741 0.000188 ***
aar_f2015         3987.973    748.109   5.331 1.09e-07 ***
aar_f2016         5264.965    749.169   7.028 2.89e-12 ***
aar_f2017         6618.572    749.430   8.831  < 2e-16 ***
Total_ya_p         511.787     36.100  14.177  < 2e-16 ***
inc_k1            -243.050     27.007  -9.000  < 2e-16 ***
inc_k5             251.645     22.916  10.981  < 2e-16 ***
uni_k_mf           178.253     28.157   6.331 3.02e-10 ***
uni_l_mf           732.442     42.235  17.342  < 2e-16 ***
Trade_pc_100K     1067.760    190.885   5.594 2.54e-08 ***
fnr02:aar_f2009    -40.505    978.026  -0.041 0.966969    
fnr03:aar_f2009     84.133   3068.211   0.027 0.978127    
fnr04:aar_f2009   -330.219   1089.318  -0.303 0.761813    
fnr05:aar_f2009    416.862   1069.758   0.390 0.696816    
fnr06:aar_f2009   -163.759   1089.292  -0.150 0.880516    
fnr07:aar_f2009    134.353   1525.051   0.088 0.929808    
fnr08:aar_f2009    329.317   1240.237   0.266 0.790631    
fnr09:aar_f2009    686.715   1288.922   0.533 0.594245    
fnr10:aar_f2009    231.288   1199.909   0.193 0.847172    
fnr11:aar_f2009   -414.412   1069.772  -0.387 0.698515    
fnr12:aar_f2009     21.853   1036.805   0.021 0.983186    
fnr14:aar_f2009   -220.698   1663.985  -0.133 0.894498    
fnr15:aar_f2009    205.720    998.429   0.206 0.836779    
fnr16:aar_f2009   -346.631   1069.772  -0.324 0.745955    
fnr17:aar_f2009   -288.412   1288.940  -0.224 0.822969    
fnr18:aar_f2009   -148.285   1089.412  -0.136 0.891744    
fnr19:aar_f2009    453.061   1872.733   0.242 0.808864    
fnr20:aar_f2009   -927.061   1664.164  -0.557 0.577542    
fnr02:aar_f2010    792.694    978.020   0.811 0.417747    
fnr03:aar_f2010   2004.378   3068.354   0.653 0.513677    
fnr04:aar_f2010   -191.813   1089.355  -0.176 0.860250    
fnr05:aar_f2010    655.342   1069.794   0.613 0.540221    
fnr06:aar_f2010    189.332   1089.409   0.174 0.862046    
fnr07:aar_f2010    728.914   1525.112   0.478 0.632745    
fnr08:aar_f2010   1281.636   1240.345   1.033 0.301597    
fnr09:aar_f2010    986.486   1288.914   0.765 0.444149    
fnr10:aar_f2010    924.121   1199.916   0.770 0.441302    
fnr11:aar_f2010    642.468   1069.866   0.601 0.548235    
fnr12:aar_f2010    381.898   1036.801   0.368 0.712658    
fnr14:aar_f2010    536.844   1663.957   0.323 0.747009    
fnr15:aar_f2010    548.008    998.671   0.549 0.583249    
fnr16:aar_f2010   -237.962   1069.934  -0.222 0.824020    
fnr17:aar_f2010   -422.338   1289.001  -0.328 0.743214    
fnr18:aar_f2010    402.939   1089.510   0.370 0.711545    
fnr19:aar_f2010    982.125   1872.779   0.524 0.600045    
fnr20:aar_f2010   -547.207   1664.063  -0.329 0.742313    
fnr02:aar_f2011    992.480    978.070   1.015 0.310359    
fnr03:aar_f2011   3891.025   3068.768   1.268 0.204970    
fnr04:aar_f2011   -775.700   1089.399  -0.712 0.476523    
fnr05:aar_f2011    183.865   1069.834   0.172 0.863563    
fnr06:aar_f2011     33.963   1089.394   0.031 0.975132    
fnr07:aar_f2011    275.017   1525.266   0.180 0.856930    
fnr08:aar_f2011    646.495   1240.336   0.521 0.602269    
fnr09:aar_f2011    599.582   1288.944   0.465 0.641860    
fnr10:aar_f2011    168.648   1199.944   0.141 0.888243    
fnr11:aar_f2011   1243.418   1070.024   1.162 0.245359    
fnr12:aar_f2011    165.379   1036.901   0.159 0.873297    
fnr14:aar_f2011   1984.847   1664.012   1.193 0.233090    
fnr15:aar_f2011    463.880    998.884   0.464 0.642414    
fnr16:aar_f2011   -497.945   1069.952  -0.465 0.641705    
fnr17:aar_f2011    257.671   1289.086   0.200 0.841590    
fnr18:aar_f2011    252.454   1089.674   0.232 0.816812    
fnr19:aar_f2011   -669.729   1872.850  -0.358 0.720682    
fnr20:aar_f2011   -542.321   1664.293  -0.326 0.744568    
fnr02:aar_f2012   1565.161    978.102   1.600 0.109716    
fnr03:aar_f2012   5674.403   3069.281   1.849 0.064642 .  
fnr04:aar_f2012   -808.528   1089.510  -0.742 0.458115    
fnr05:aar_f2012    820.104   1070.017   0.766 0.443507    
fnr06:aar_f2012    800.976   1089.455   0.735 0.462302    
fnr07:aar_f2012   1047.940   1525.235   0.687 0.492122    
fnr08:aar_f2012   1090.416   1240.413   0.879 0.379470    
fnr09:aar_f2012   1071.846   1289.011   0.832 0.405779    
fnr10:aar_f2012    321.458   1200.216   0.268 0.788856    
fnr11:aar_f2012   1467.212   1070.665   1.370 0.170728    
fnr12:aar_f2012    669.171   1037.128   0.645 0.518864    
fnr14:aar_f2012   1739.551   1664.177   1.045 0.296018    
fnr15:aar_f2012    463.860    999.265   0.464 0.642556    
fnr16:aar_f2012    380.682   1070.437   0.356 0.722154    
fnr17:aar_f2012    637.493   1289.624   0.494 0.621133    
fnr18:aar_f2012    482.679   1089.761   0.443 0.657871    
fnr19:aar_f2012    727.671   1872.902   0.389 0.697670    
fnr20:aar_f2012   -378.342   1664.741  -0.227 0.820240    
fnr02:aar_f2013   1953.373    978.298   1.997 0.045996 *  
fnr03:aar_f2013   5108.375   3070.149   1.664 0.096297 .  
fnr04:aar_f2013  -1206.685   1089.615  -1.107 0.268240    
fnr05:aar_f2013   -198.536   1070.094  -0.186 0.852832    
fnr06:aar_f2013    410.281   1089.375   0.377 0.706497    
fnr07:aar_f2013    890.998   1525.236   0.584 0.559173    
fnr08:aar_f2013    575.599   1240.249   0.464 0.642628    
fnr09:aar_f2013     64.585   1289.204   0.050 0.960050    
fnr10:aar_f2013   -515.180   1200.200  -0.429 0.667793    
fnr11:aar_f2013   1179.371   1071.062   1.101 0.270979    
fnr12:aar_f2013    -69.430   1037.183  -0.067 0.946636    
fnr14:aar_f2013    208.353   1664.208   0.125 0.900381    
fnr15:aar_f2013      7.994    999.213   0.008 0.993617    
fnr16:aar_f2013   -347.235   1070.757  -0.324 0.745754    
fnr17:aar_f2013    203.405   1289.762   0.158 0.874704    
fnr18:aar_f2013    201.272   1090.026   0.185 0.853524    
fnr19:aar_f2013    278.261   1873.128   0.149 0.881921    
fnr20:aar_f2013  -1110.163   1664.836  -0.667 0.504960    
fnr02:aar_f2014   2019.269    978.649   2.063 0.039214 *  
fnr03:aar_f2014   4938.603   3071.105   1.608 0.107979    
fnr04:aar_f2014  -1456.367   1089.708  -1.336 0.181550    
fnr05:aar_f2014   -254.055   1070.253  -0.237 0.812388    
fnr06:aar_f2014    571.152   1089.474   0.524 0.600167    
fnr07:aar_f2014    582.123   1525.332   0.382 0.702772    
fnr08:aar_f2014    689.084   1240.251   0.556 0.578548    
fnr09:aar_f2014   -186.541   1289.179  -0.145 0.884965    
fnr10:aar_f2014   -674.319   1200.339  -0.562 0.574335    
fnr11:aar_f2014   -183.391   1071.523  -0.171 0.864124    
fnr12:aar_f2014   -147.825   1037.277  -0.143 0.886690    
fnr14:aar_f2014    253.302   1664.812   0.152 0.879084    
fnr15:aar_f2014   -481.056    999.093  -0.481 0.630220    
fnr16:aar_f2014   -229.362   1070.812  -0.214 0.830418    
fnr17:aar_f2014    -61.073   1289.824  -0.047 0.962239    
fnr18:aar_f2014   -393.115   1090.258  -0.361 0.718459    
fnr19:aar_f2014   1688.165   1873.121   0.901 0.367563    
fnr20:aar_f2014  -1563.827   1665.176  -0.939 0.347778    
fnr02:aar_f2015   2401.120    979.036   2.453 0.014273 *  
fnr03:aar_f2015   6985.367   3073.112   2.273 0.023131 *  
fnr04:aar_f2015  -1912.336   1089.754  -1.755 0.079446 .  
fnr05:aar_f2015  -1326.089   1070.254  -1.239 0.215480    
fnr06:aar_f2015     22.631   1089.626   0.021 0.983431    
fnr07:aar_f2015    990.944   1525.354   0.650 0.515996    
fnr08:aar_f2015   -776.910   1240.290  -0.626 0.531130    
fnr09:aar_f2015  -1242.730   1289.232  -0.964 0.335201    
fnr10:aar_f2015  -1492.749   1200.502  -1.243 0.213856    
fnr11:aar_f2015  -1489.385   1072.451  -1.389 0.165063    
fnr12:aar_f2015   -711.755   1037.476  -0.686 0.492767    
fnr14:aar_f2015  -1695.187   1665.139  -1.018 0.308783    
fnr15:aar_f2015   -587.449    999.385  -0.588 0.556727    
fnr16:aar_f2015   -139.973   1070.880  -0.131 0.896019    
fnr17:aar_f2015   -867.834   1289.740  -0.673 0.501107    
fnr18:aar_f2015   -439.127   1090.372  -0.403 0.687190    
fnr19:aar_f2015    369.085   1873.412   0.197 0.843839    
fnr20:aar_f2015  -3266.760   1665.444  -1.961 0.049964 *  
fnr02:aar_f2016   3656.344    979.067   3.735 0.000193 ***
fnr03:aar_f2016  10264.572   3074.072   3.339 0.000856 ***
fnr04:aar_f2016  -2459.017   1089.893  -2.256 0.024169 *  
fnr05:aar_f2016  -2117.228   1070.338  -1.978 0.048059 *  
fnr06:aar_f2016   -598.671   1089.701  -0.549 0.582801    
fnr07:aar_f2016    447.813   1525.278   0.294 0.769099    
fnr08:aar_f2016  -1716.491   1240.468  -1.384 0.166595    
fnr09:aar_f2016  -1987.219   1289.181  -1.541 0.123368    
fnr10:aar_f2016  -3090.918   1200.777  -2.574 0.010124 *  
fnr11:aar_f2016  -3274.743   1072.946  -3.052 0.002303 ** 
fnr12:aar_f2016   -901.775   1037.688  -0.869 0.384941    
fnr14:aar_f2016  -1552.417   1665.259  -0.932 0.351330    
fnr15:aar_f2016  -1872.887    999.582  -1.874 0.061126 .  
fnr16:aar_f2016  -1074.143   1070.970  -1.003 0.316004    
fnr17:aar_f2016  -1612.215   1290.487  -1.249 0.211703    
fnr18:aar_f2016  -1361.291   1090.771  -1.248 0.212178    
fnr19:aar_f2016    906.286   1873.612   0.484 0.628646    
fnr20:aar_f2016  -3169.910   1665.821  -1.903 0.057200 .  
fnr02:aar_f2017   4707.776    979.374   4.807 1.65e-06 ***
fnr03:aar_f2017  13986.613   3075.071   4.548 5.74e-06 ***
fnr04:aar_f2017  -3549.658   1089.920  -3.257 0.001146 ** 
fnr05:aar_f2017  -2397.820   1070.176  -2.241 0.025165 *  
fnr06:aar_f2017     60.036   1089.704   0.055 0.956069    
fnr07:aar_f2017    960.018   1525.236   0.629 0.529146    
fnr08:aar_f2017  -2045.538   1240.415  -1.649 0.099294 .  
fnr09:aar_f2017  -3223.036   1289.344  -2.500 0.012510 *  
fnr10:aar_f2017  -3807.142   1200.767  -3.171 0.001545 ** 
fnr11:aar_f2017  -3863.610   1073.185  -3.600 0.000326 ***
fnr12:aar_f2017  -2046.447   1038.104  -1.971 0.048828 *  
fnr14:aar_f2017  -2074.192   1665.271  -1.246 0.213077    
fnr15:aar_f2017  -2799.827    999.681  -2.801 0.005149 ** 
fnr16:aar_f2017  -2278.453   1070.923  -2.128 0.033499 *  
fnr17:aar_f2017  -2761.733   1290.527  -2.140 0.032479 *  
fnr18:aar_f2017  -2661.041   1090.689  -2.440 0.014785 *  
fnr19:aar_f2017   -716.410   1873.886  -0.382 0.702272    
fnr20:aar_f2017  -3922.387   1665.464  -2.355 0.018615 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2105 on 1944 degrees of freedom
Multiple R-squared:  0.8953,    Adjusted R-squared:  0.8848 
F-statistic: 85.21 on 195 and 1944 DF,  p-value: < 2.2e-16
>>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186

Vi legger inn residualene fra lm2 til pm2 og kaller dem res_m2

pm2 <- pm2 %>%
  mutate(res_m2 = resid(lm2))

Vi filtrer fylkene

pm2 %>% filter(fnr %in% c("01", "02", "04", "11", "12")) %>%
ggplot(mapping = aes(x = aar_d, y = res_m2)) +
geom_line(aes(group = knavn)) +
scale_size_manual(values = c(seq(2.0, 0.5, by = -0.1))) +
geom_hline(yintercept = 0) +
theme(legend.position = 'bottom') +
  facet_wrap(~fylke)
<<<<<<< HEAD =======

>>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186
  1. kvaliteten på modell 2 ?

  2. er det grunn til å mistenke at vi mangler variabler. ja vi mistenker dette.

Vi filtrerer med hensyn på fylke “11”

pm2 %>% filter(fnr %in% c("11")) %>%
ggplot(mapping = aes(x = aar_d, y = res_m2)) +
scale_color_viridis(discrete = TRUE, option = "D") +
geom_line(aes(group = knavn, colour = knavn, size = knavn)) +
scale_size_manual(values = c(seq(2.0, 0.5, by = -0.1))) +
geom_hline(yintercept = 0) +
theme(legend.position = 'bottom')
<<<<<<< HEAD =======

>>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186

Vi gjentar plottet ovenfor med utvalgte kommuner

pm2 %>% filter(knr %in% c("1119", "1120", "1127", "1121", "1130", "1135", "1106", "1149")) %>%
ggplot(mapping = aes(x = aar_d, y = res_m2)) +
scale_color_viridis(discrete = TRUE, option = "A") +
geom_line(aes(group = knavn, colour = knavn, size =knavn)) +
scale_size_manual(values = c(seq(2.0, 0.5, by = -0.1))) +
geom_hline(yintercept = 0) +
theme(legend.position = 'bottom')
<<<<<<< HEAD =======

>>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186

Det som kjennetegner kommunene i Rogland er at i Stavanger blir overvurdert

#Modell for hvert år

<<<<<<< HEAD <<<<<<< HEAD
pm2_n <- pm2 %>% 
# velger først variablene. Tar med aar_d
   select(pm2, fnr, knr, aar, aar_f, aar_d, Menn_ya_p, 
          Kvinner_ya_p, Total_ya_p, inc_k1, inc_k5, uni_k_mf, 
          uni_l_mf, Trade_pc_100K) %>% 
  # grupperer mht. aar_d som er date object
  group_by(aar_d) %>%
  nest()
======= ======= >>>>>>> 9d191ee1d48e508193ed3703a38d953fa7f54d64
pm2_n <- pm2 %>% 
# velger først variablene. Tar med aar_d
   select(pm2, fnr, knr, aar, aar_f, aar_d, Menn_ya_p, 
          Kvinner_ya_p, Total_ya_p, inc_k1, inc_k5, uni_k_mf, 
          uni_l_mf, Trade_pc_100K) %>% 
  # grupperer mht. aar_d som er date object
<<<<<<< HEAD
     group_by(aar_d) %>%
   nest()
>>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186 ======= group_by(aar_d) %>% nest()
>>>>>>> 9d191ee1d48e508193ed3703a38d953fa7f54d64 <<<<<<< HEAD <<<<<<< HEAD
pm2_n
======= =======
pm2_n
>>>>>>> 9d191ee1d48e508193ed3703a38d953fa7f54d64
>>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186 <<<<<<< HEAD <<<<<<< HEAD ======= >>>>>>> 9d191ee1d48e508193ed3703a38d953fa7f54d64
# Ser bra ut ;-)
pm2_n$data[[1]] %>%
 head(n = 5)
<<<<<<< HEAD ======= ======= >>>>>>> 9d191ee1d48e508193ed3703a38d953fa7f54d64
>>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186
dim(pm2_n)
<<<<<<< HEAD =======
[1] 10  2
>>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186

kom modell

# må bruke a_df i funksjonen ellers vil den alltid bruke pm2
kom_model <- function(a_df) {
   lm(pm2 ~ fnr + Total_ya_p + inc_k1 + inc_k5 + uni_k_mf + uni_l_mf + Trade_pc_100K, data = a_df)
}
pm2_n <- pm2_n %>% 
   mutate(model = map(data, .f = kom_model)) 
# kom_model(pm2_n$aar) %>% 
#    summary()
mod_sum <- pm2_n %>% 
  # Har bare disse årene så unødvendig
   # filter(aar %in% c("2008", "2009", "2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017")) %>% 
   mutate(mod_summary = map(.x = model, .f = glance)) %>% 
   unnest(mod_summary) %>% 
   print()
<<<<<<< HEAD <<<<<<< HEAD ======= ======= >>>>>>> 9d191ee1d48e508193ed3703a38d953fa7f54d64
>>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186 <<<<<<< HEAD <<<<<<< HEAD ======= >>>>>>> 9d191ee1d48e508193ed3703a38d953fa7f54d64
coef_df <- mod_sum$model %>% 
  # 1 plukker ut koeffisientene
   map_df(1) %>% 
  # legges i en tibble 
   tibble()
<<<<<<< HEAD
LS0tDQp0aXRsZTogIk1vZGVsbGVyIg0KQXV0b3I6IEFubiBFbGlzYWJ0aCBhbmQgSGVpZGkgDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7cn0NCnN1cHByZXNzUGFja2FnZVN0YXJ0dXBNZXNzYWdlcyh7DQogIGxpYnJhcnkodGlkeXZlcnNlKQ0KICBsaWJyYXJ5KGx1YnJpZGF0ZSkNCiAgbGlicmFyeShtb2RlbHIpDQogIGxpYnJhcnkoYnJvb20pDQogIGxpYnJhcnkobG10ZXN0KQ0KICBsaWJyYXJ5KHNhbmR3aWNoKQ0KICBsaWJyYXJ5KHZpcmlkaXMpDQp9KQ0KYGBgDQoNCmBgYHtyIExlcyBpbm4gZmlsfQ0KcG0yIDwtIHJlYWRfY3N2KCJkYXRhL3BtMi5jc3YiLCBzaG93X2NvbF90eXBlcyA9IEZBTFNFKQ0KYGBgDQoNCmBgYHtyfQ0KcG0yIDwtIHBtMiAlPiUgDQogIG11dGF0ZSgNCiAgICBmbnIgPSBzdHJfc3ViKGtuciwgMSwyKSwNCiAgICBhYXJfZiA9IHN0cl9zdWIoYWFyKQ0KICApDQpgYGANCg0KYGBge3IgT3ZlcnNpa3RlbiBvdmVyIHZhcmlhYmxlbmUgaSBwbTJ9DQpoZWFkKHBtMikNCmBgYA0KDQpgYGB7ciBQYXJzZSBmYWN0b3J9DQpwbTIgJT4lIA0KICBtdXRhdGUoDQogICAgZm5yID0gcGFyc2VfZmFjdG9yKGZuciwgbGV2ZWxzID0gZm5yKSwNCiAgICBhYXJfZiA9IHBhcnNlX2ZhY3RvcihhYXJfZiwgbGV2ZWxzID0gYWFyX2YpDQogICkNCmBgYA0KDQpgYGB7cn0NCnBtMiA8LSBwbTIgJT4lIA0KICBtdXRhdGUoDQogICAgVHJhZGVfcGNfMTAwSyA9IFRyYWRlX3AvMTAwMDAwDQogICkgDQpgYGANCg0KYGBge3IgT3ZlcnNpa3R9DQpoZWFkKHBtMiwgbiA9IDQpDQpgYGANCg0KYGBge3IgVGFiZWxsIDF9DQp0aWJibGUoImtuciIsICJmbnIiLCAiYWFyX2YiLCAiVHJhZGVfcGNfMTAwayIpDQpgYGANCg0KI01vZGVsbA0KDQpgYGB7ciBNb2RlbGx9DQptb2QxIDwtICdwbTIgfiBhYXJfZiArIFRvdGFsX3lhX3AgKyBpbmNfazEgKyBpbmNfazUgKyB1bmlfa19tZiArIHVuaV9sX21mICsgVHJhZGVfcGNfMTAwSycNCmBgYA0KDQpgYGB7ciBHZW5lcmVyZXIgbG0gfQ0KbG0xIDwtIGxtKG1vZDEsIGRhdGEgPSBwbTIsIHN1YnNldCA9IGNvbXBsZXRlLmNhc2VzKHBtMikpDQpgYGANCg0KVmkgbGVnZ2VyIGlubiByZXNpZHVhbGVuZSBmcmEgZGVuIGxpbsOmcmUgbW9kZWxsZW4NCg0KYGBge3IgUmVzaWR1YWxlcn0NCnBtMiAlPiUgDQphZGRfcmVzaWR1YWxzKGxtMSkNCmhlYWQocG0yLCBuID0gNCkNCmBgYA0KDQpgYGB7ciBPcHBzdW1tZXJpbmd9DQpzdW1tYXJ5KGxtMSkNCmBgYA0KdXQgaSBmcmEgdmVyZGllbiBww6Ugw6VycyBrb2VmZmlzaWVudGVuZSBrYW4gdmkgbGVzZSBhdCBkZXQgZXIgZW4gw7hrbmluZyBww6UgbywxJSBmcmEgMjAxMCB0aWwgMjAxNy4gdmkgc2VyIGVuIMO4a25pbmcgZnJhIMOlciB0aWwgw6VyLiANCg0KdXQgaSBmcmEgdsOlciBrdW5uc2thcCBlciB2aSBlbmlnZSBvbSBhdCBkZSBlciBzb20gZm9ydmVudGV0IA0KDQpIZXRlcm9za2VkYXN0aXNpdGV0DQpgYGB7cn0NCmJwdGVzdChsbTEpDQpgYGANCg0KSmEgdmkgaGFyIHByb2JsZW1lciBtZWQgaGV0ZXJvc2tlZGFzaXRldGVuIGhlciBwZ2EgYXQgdmVyZGllbiBlciBmb3INCmjDuHkuDQoNClJhcHBvcnRlcmUgcm9idXN0ZSBzdGFuZGFyZCBmZWlsIG9nIHRpbGjDuHJlbmRlIHJvYnVzdGUgdC12ZXJkaWVyDQoNCmBgYHtyfQ0KY29lZnRlc3QobG0xKQ0KYGBgDQoNCmBgYHtyfQ0KdmNvdkhDKGxtMSkNCmBgYA0KDQpGbHl0dGVyIHJlc2lkdWFsZW5lIGZyYSBsbTEgdGlsIGRhdGFzZXR0ZXQgcG0yDQoNCmBgYHtyfQ0KcG0yIDwtIHBtMiAlPiUNCiAgYWRkX3Jlc2lkdWFscyhsbTEpDQpgYGANCg0KDQpsYWdlciBueSB2YXJpYWJlbA0KDQpgYGB7cn0NCnBtMiA8LSBwbTIgJT4lDQptdXRhdGUoYWFyX2QgPSBtYWtlX2RhdGUoYWFyKSkNCmBgYA0KDQpWaSBmaWx0ZXJlciB1dCBmeWxrZW5lIMOYc3Rmb2xkLCBBa2Vyc2h1cywgT3NsbywgUm9nYWxhbmQgb2cgSG9yZGFsYW5kDQoNCmBgYHtyfQ0KcG0yIDwtIHBtMiAlPiUNCm11dGF0ZShmeWxrZSA9IHN1YnN0cihrbnIsIHN0YXJ0ID0gMSwgc3RvcCA9IDIpKQ0KYGBgDQoNCmBgYHtyfQ0KIyBIZXIgb3ZlcnNrcml2ZXIgZGVyZSBwbTIuIExhZ2VyIGhlbGxlciBlbiBueSBwbTJfcmVkDQojIEJydWtlciBwbTJfcmVkIGZvciDDpSBsYWdlIHBsb3R0ZW5lDQpwbTJfcmVkIDwtIHBtMiAlPiUgDQogIGZpbHRlcihmeWxrZSAlaW4lIGMoIjAxIiwgIjAyIiwgIjAzIiwgIjExIiwgIjEyIikpDQpgYGANCg0KT3BwZ2F2ZSA3IHRpbCAxMA0KDQpgYGB7cn0NCiMgcG0yX3JlZCAlPiUgDQojICAgdW5uZXN0KGMoZnlsa2UpKSAlPiUgDQojICAgZ3JvdXBfYnkoZnlsa2UsIGFhcl9kKSAlPiUgDQojICAgc3VtbWFyaXNlKG1lYW5fZnlsa2UgPSBtZWFuKHJlc2lkKSkgJT4lIA0KIyAgIGdncGxvdChtYXBwaW5nID0gYWVzKHggPSBhYXJfZCwgeSA9IG1lYW5fZnlsa2UsIGNvbG91ciA9IGZ5bGtlKSkgKw0KIyAgIGdlb21fbGluZShsd2QgPSAxKSArDQojICAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3VyID0gIndoaXRlIikgKw0KIyAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKQ0KYGBgDQoNCmBgYHtyfQ0KcG0yX3JlZCAlPiUNCiAgZmlsdGVyKGZ5bGtlICVpbiUgYygiMDEiLCAiMDIiLCAiMDMiLCAiMTEiLCAiMTIiKSkgJT4lDQogIHVubmVzdChjKGZ5bGtlKSkgJT4lDQogIGdyb3VwX2J5IChmeWxrZSwgYWFyX2QpICU+JQ0KICBzdW1tYXJpc2UobWVhbl9meWxrZSA9IG1lYW4ocmVzaWQpKSAlPiUNCiAgZ2dwbG90KGFlcyh4PWFhcl9kLCB5PW1lYW5fZnlsa2UsIGNvbG91ciA9IGZ5bGtlKSkgKw0KICBnZW9tX2xpbmUobHdkPTEpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3VyID0gImJsYWNrIikgKw0KICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIikNCmBgYA0KDQoNCiNEdW1teSBmeWxrZSBvZyDDpXINCg0KVmkgaW5uZsO4cmVyIGVuIGR1bW15IGZvciBodmVydCBmeWxrZQ0KDQpgYGB7cn0NCiMgTsOlIGhhciB2aSBoZWwgcG0yIMOlIGJydWtlDQptb2QyIDwtICdwbTIgfiBmbnIqYWFyX2YgKyBUb3RhbF95YV9wICsgaW5jX2sxICsgaW5jX2s1ICsgdW5pX2tfbWYgKyB1bmlfbF9tZiArIFRyYWRlX3BjXzEwMEsnDQpgYGANCg0KVmkgZ2VuZXJlcmVyIGxtIDIgZnJhIG1vZGVsbCAyIG9nIGRhdGFzZXR0ZXQgcG0yDQoNCmBgYHtyfQ0KbG0yIDwtIGxtKG1vZDIsIGRhdGEgPSBwbTIpDQpgYGANCg0KYGBge3J9DQpzdW1tYXJ5KGxtMikNCmBgYA0KDQpWaSBsZWdnZXIgaW5uIHJlc2lkdWFsZW5lIGZyYSBsbTIgdGlsIHBtMiBvZyBrYWxsZXIgZGVtIHJlc19tMg0KDQpgYGB7cn0NCnBtMiA8LSBwbTIgJT4lDQogIG11dGF0ZShyZXNfbTIgPSByZXNpZChsbTIpKQ0KYGBgDQoNClZpIGZpbHRyZXIgZnlsa2VuZQ0KDQpgYGB7cn0NCnBtMiAlPiUgZmlsdGVyKGZuciAlaW4lIGMoIjAxIiwgIjAyIiwgIjA0IiwgIjExIiwgIjEyIikpICU+JQ0KZ2dwbG90KG1hcHBpbmcgPSBhZXMoeCA9IGFhcl9kLCB5ID0gcmVzX20yKSkgKw0KZ2VvbV9saW5lKGFlcyhncm91cCA9IGtuYXZuKSkgKw0Kc2NhbGVfc2l6ZV9tYW51YWwodmFsdWVzID0gYyhzZXEoMi4wLCAwLjUsIGJ5ID0gLTAuMSkpKSArDQpnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwKSArDQp0aGVtZShsZWdlbmQucG9zaXRpb24gPSAnYm90dG9tJykgKw0KICBmYWNldF93cmFwKH5meWxrZSkNCmBgYA0KDQppLiAga3ZhbGl0ZXRlbiBww6UgbW9kZWxsIDIgPw0KDQppaS4gZXIgZGV0IGdydW5uIHRpbCDDpSBtaXN0ZW5rZSBhdCB2aSBtYW5nbGVyIHZhcmlhYmxlci4gamEgdmkgbWlzdGVua2VyIGRldHRlLg0KDQpWaSBmaWx0cmVyZXIgbWVkIGhlbnN5biBww6UgZnlsa2UgIjExIg0KDQpgYGB7cn0NCnBtMiAlPiUgZmlsdGVyKGZuciAlaW4lIGMoIjExIikpICU+JQ0KZ2dwbG90KG1hcHBpbmcgPSBhZXMoeCA9IGFhcl9kLCB5ID0gcmVzX20yKSkgKw0Kc2NhbGVfY29sb3JfdmlyaWRpcyhkaXNjcmV0ZSA9IFRSVUUsIG9wdGlvbiA9ICJEIikgKw0KZ2VvbV9saW5lKGFlcyhncm91cCA9IGtuYXZuLCBjb2xvdXIgPSBrbmF2biwgc2l6ZSA9IGtuYXZuKSkgKw0Kc2NhbGVfc2l6ZV9tYW51YWwodmFsdWVzID0gYyhzZXEoMi4wLCAwLjUsIGJ5ID0gLTAuMSkpKSArDQpnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwKSArDQp0aGVtZShsZWdlbmQucG9zaXRpb24gPSAnYm90dG9tJykNCmBgYA0KDQpWaSBnamVudGFyIHBsb3R0ZXQgb3ZlbmZvciBtZWQgdXR2YWxndGUga29tbXVuZXINCg0KYGBge3J9DQpwbTIgJT4lIGZpbHRlcihrbnIgJWluJSBjKCIxMTE5IiwgIjExMjAiLCAiMTEyNyIsICIxMTIxIiwgIjExMzAiLCAiMTEzNSIsICIxMTA2IiwgIjExNDkiKSkgJT4lDQpnZ3Bsb3QobWFwcGluZyA9IGFlcyh4ID0gYWFyX2QsIHkgPSByZXNfbTIpKSArDQpzY2FsZV9jb2xvcl92aXJpZGlzKGRpc2NyZXRlID0gVFJVRSwgb3B0aW9uID0gIkEiKSArDQpnZW9tX2xpbmUoYWVzKGdyb3VwID0ga25hdm4sIGNvbG91ciA9IGtuYXZuLCBzaXplID1rbmF2bikpICsNCnNjYWxlX3NpemVfbWFudWFsKHZhbHVlcyA9IGMoc2VxKDIuMCwgMC41LCBieSA9IC0wLjEpKSkgKw0KZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCkgKw0KdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gJ2JvdHRvbScpDQpgYGANCg0KRGV0IHNvbSBramVubmV0ZWduZXIga29tbXVuZW5lIGkgUm9nbGFuZCBlciBhdCBpIFN0YXZhbmdlciBibGlyIG92ZXJ2dXJkZXJ0DQoNCiNNb2RlbGwgZm9yIGh2ZXJ0IMOlcg0KDQppLiAgDQoNCmBgYHtyfQ0KcG0yX24gPC0gcG0yICU+JSANCiMgdmVsZ2VyIGbDuHJzdCB2YXJpYWJsZW5lLiBUYXIgbWVkIGFhcl9kDQogICBzZWxlY3QocG0yLCBmbnIsIGtuciwgYWFyLCBhYXJfZiwgYWFyX2QsIE1lbm5feWFfcCwgDQogICAgICAgICAgS3Zpbm5lcl95YV9wLCBUb3RhbF95YV9wLCBpbmNfazEsIGluY19rNSwgdW5pX2tfbWYsIA0KICAgICAgICAgIHVuaV9sX21mLCBUcmFkZV9wY18xMDBLKSAlPiUgDQogICMgZ3J1cHBlcmVyIG1odC4gYWFyX2Qgc29tIGVyIGRhdGUgb2JqZWN0DQogIGdyb3VwX2J5KGFhcl9kKSAlPiUNCiAgbmVzdCgpDQpgYGANCg0KYGBge3J9DQpwbTJfbg0KYGBgDQoNCmBgYHtyfQ0KIyBTZXIgYnJhIHV0IDstKQ0KcG0yX24kZGF0YVtbMV1dICU+JQ0KIGhlYWQobiA9IDUpDQpgYGANCg0KYGBge3J9DQpkaW0ocG0yX24pDQpgYGANCmtvbSBtb2RlbGwNCmBgYHtyfQ0KIyBtw6UgYnJ1a2UgYV9kZiBpIGZ1bmtzam9uZW4gZWxsZXJzIHZpbCBkZW4gYWxsdGlkIGJydWtlIHBtMg0Ka29tX21vZGVsIDwtIGZ1bmN0aW9uKGFfZGYpIHsNCiAgIGxtKHBtMiB+IGZuciArIFRvdGFsX3lhX3AgKyBpbmNfazEgKyBpbmNfazUgKyB1bmlfa19tZiArIHVuaV9sX21mICsgVHJhZGVfcGNfMTAwSywgZGF0YSA9IGFfZGYpDQp9DQpgYGANCg0KYGBge3J9DQpwbTJfbiA8LSBwbTJfbiAlPiUgDQogICBtdXRhdGUobW9kZWwgPSBtYXAoZGF0YSwgLmYgPSBrb21fbW9kZWwpKSANCmBgYA0KDQpgYGB7cn0NCiMga29tX21vZGVsKHBtMl9uJGFhcikgJT4lIA0KIyAgICBzdW1tYXJ5KCkNCmBgYA0KDQo1LiANCmBgYHtyfQ0KDQpgYGANCg0KYGBge3J9DQptb2Rfc3VtIDwtIHBtMl9uICU+JSANCiAgIyBIYXIgYmFyZSBkaXNzZSDDpXJlbmUgc8OlIHVuw7hkdmVuZGlnDQogICAjIGZpbHRlcihhYXIgJWluJSBjKCIyMDA4IiwgIjIwMDkiLCAiMjAxMCIsICIyMDExIiwgIjIwMTIiLCAiMjAxMyIsICIyMDE0IiwgIjIwMTUiLCAiMjAxNiIsICIyMDE3IikpICU+JSANCiAgIG11dGF0ZShtb2Rfc3VtbWFyeSA9IG1hcCgueCA9IG1vZGVsLCAuZiA9IGdsYW5jZSkpICU+JSANCiAgIHVubmVzdChtb2Rfc3VtbWFyeSkgJT4lIA0KICAgcHJpbnQoKQ0KYGBgDQoNCmBgYHtyfQ0KY29lZl9kZiA8LSBtb2Rfc3VtJG1vZGVsICU+JSANCiAgIyAxIHBsdWtrZXIgdXQga29lZmZpc2llbnRlbmUNCiAgIG1hcF9kZigxKSAlPiUgDQogICMgbGVnZ2VzIGkgZW4gdGliYmxlIA0KICAgdGliYmxlKCkNCmBgYA0K
=======
LS0tCnRpdGxlOiAiTW9kZWxsZXIiCkF1dG9yOiBBbm4gRWxpc2FidGggYW5kIEhlaWRpIApvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpgYGB7cn0Kc3VwcHJlc3NQYWNrYWdlU3RhcnR1cE1lc3NhZ2VzKHsKICBsaWJyYXJ5KHRpZHl2ZXJzZSkKICBsaWJyYXJ5KGx1YnJpZGF0ZSkKICBsaWJyYXJ5KG1vZGVscikKICBsaWJyYXJ5KGJyb29tKQogIGxpYnJhcnkobG10ZXN0KQogIGxpYnJhcnkoc2FuZHdpY2gpCiAgbGlicmFyeSh2aXJpZGlzKQp9KQpgYGAKCmBgYHtyIExlcyBpbm4gZmlsfQpwbTIgPC0gcmVhZF9jc3YoImRhdGEvcG0yLmNzdiIsIHNob3dfY29sX3R5cGVzID0gRkFMU0UpCmBgYAoKYGBge3J9CnBtMiA8LSBwbTIgJT4lIAogIG11dGF0ZSgKICAgIGZuciA9IHN0cl9zdWIoa25yLCAxLDIpLAogICAgYWFyX2YgPSBzdHJfc3ViKGFhcikKICApCmBgYAoKYGBge3IgT3ZlcnNpa3RlbiBvdmVyIHZhcmlhYmxlbmUgaSBwbTJ9CmhlYWQocG0yKQpgYGAKCmBgYHtyIFBhcnNlIGZhY3Rvcn0KcG0yICU+JSAKICBtdXRhdGUoCiAgICBmbnIgPSBwYXJzZV9mYWN0b3IoZm5yLCBsZXZlbHMgPSBmbnIpLAogICAgYWFyX2YgPSBwYXJzZV9mYWN0b3IoYWFyX2YsIGxldmVscyA9IGFhcl9mKQogICkKYGBgCgpgYGB7cn0KcG0yIDwtIHBtMiAlPiUgCiAgbXV0YXRlKAogICAgVHJhZGVfcGNfMTAwSyA9IFRyYWRlX3AvMTAwMDAwCiAgKSAKYGBgCgpgYGB7ciBPdmVyc2lrdH0KaGVhZChwbTIsIG4gPSA0KQpgYGAKCmBgYHtyIFRhYmVsbCAxfQp0aWJibGUoImtuciIsICJmbnIiLCAiYWFyX2YiLCAiVHJhZGVfcGNfMTAwayIpCmBgYAoKI01vZGVsbAoKYGBge3IgTW9kZWxsfQptb2QxIDwtICdwbTIgfiBhYXJfZiArIFRvdGFsX3lhX3AgKyBpbmNfazEgKyBpbmNfazUgKyB1bmlfa19tZiArIHVuaV9sX21mICsgVHJhZGVfcGNfMTAwSycKYGBgCgpgYGB7ciBHZW5lcmVyZXIgbG0gfQpsbTEgPC0gbG0obW9kMSwgZGF0YSA9IHBtMiwgc3Vic2V0ID0gY29tcGxldGUuY2FzZXMocG0yKSkKYGBgCgpWaSBsZWdnZXIgaW5uIHJlc2lkdWFsZW5lIGZyYSBkZW4gbGluw6ZyZSBtb2RlbGxlbgoKYGBge3IgUmVzaWR1YWxlcn0KcG0yICU+JSAKYWRkX3Jlc2lkdWFscyhsbTEpCmhlYWQocG0yLCBuID0gNCkKYGBgCgpgYGB7ciBPcHBzdW1tZXJpbmd9CnN1bW1hcnkobG0xKQpgYGAKdXQgaSBmcmEgdmVyZGllbiBww6Ugw6VycyBrb2VmZmlzaWVudGVuZSBrYW4gdmkgbGVzZSBhdCBkZXQgZXIgZW4gw7hrbmluZyBww6UgbywxJSBmcmEgMjAxMCB0aWwgMjAxNy4gdmkgc2VyIGVuIMO4a25pbmcgZnJhIMOlciB0aWwgw6VyLiAKCnV0IGkgZnJhIHbDpXIga3VubnNrYXAgZXIgdmkgZW5pZ2Ugb20gYXQgZGUgZXIgc29tIGZvcnZlbnRldCAKCkhldGVyb3NrZWRhc3Rpc2l0ZXQKYGBge3J9CmJwdGVzdChsbTEpCmBgYAoKSmEgdmkgaGFyIHByb2JsZW1lciBtZWQgaGV0ZXJvc2tlZGFzaXRldGVuIGhlciBwZ2EgYXQgdmVyZGllbiBlciBmb3IKaMO4eS4KClJhcHBvcnRlcmUgcm9idXN0ZSBzdGFuZGFyZCBmZWlsIG9nIHRpbGjDuHJlbmRlIHJvYnVzdGUgdC12ZXJkaWVyCgpgYGB7cn0KY29lZnRlc3QobG0xKQpgYGAKCmBgYHtyfQp2Y292SEMobG0xKQpgYGAKCkZseXR0ZXIgcmVzaWR1YWxlbmUgZnJhIGxtMSB0aWwgZGF0YXNldHRldCBwbTIKCmBgYHtyfQpwbTIgPC0gcG0yICU+JQogIGFkZF9yZXNpZHVhbHMobG0xKQpgYGAKCgpsYWdlciBueSB2YXJpYWJlbAoKYGBge3J9CnBtMiA8LSBwbTIgJT4lCm11dGF0ZShhYXJfZCA9IG1ha2VfZGF0ZShhYXIpKQpgYGAKClZpIGZpbHRlcmVyIHV0IGZ5bGtlbmUgw5hzdGZvbGQsIEFrZXJzaHVzLCBPc2xvLCBSb2dhbGFuZCBvZyBIb3JkYWxhbmQKCmBgYHtyfQpwbTIgPC0gcG0yICU+JQptdXRhdGUoZnlsa2UgPSBzdWJzdHIoa25yLCBzdGFydCA9IDEsIHN0b3AgPSAyKSkKYGBgCgpgYGB7cn0KIyBIZXIgb3ZlcnNrcml2ZXIgZGVyZSBwbTIuIExhZ2VyIGhlbGxlciBlbiBueSBwbTJfcmVkCiMgQnJ1a2VyIHBtMl9yZWQgZm9yIMOlIGxhZ2UgcGxvdHRlbmUKcG0yX3JlZCA8LSBwbTIgJT4lIAogIGZpbHRlcihmeWxrZSAlaW4lIGMoIjAxIiwgIjAyIiwgIjAzIiwgIjExIiwgIjEyIikpCmBgYAoKT3BwZ2F2ZSA3IHRpbCAxMAoKYGBge3J9CiMgcG0yX3JlZCAlPiUgCiMgICB1bm5lc3QoYyhmeWxrZSkpICU+JSAKIyAgIGdyb3VwX2J5KGZ5bGtlLCBhYXJfZCkgJT4lIAojICAgc3VtbWFyaXNlKG1lYW5fZnlsa2UgPSBtZWFuKHJlc2lkKSkgJT4lIAojICAgZ2dwbG90KG1hcHBpbmcgPSBhZXMoeCA9IGFhcl9kLCB5ID0gbWVhbl9meWxrZSwgY29sb3VyID0gZnlsa2UpKSArCiMgICBnZW9tX2xpbmUobHdkID0gMSkgKwojICAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3VyID0gIndoaXRlIikgKwojICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpCmBgYAoKYGBge3J9CnBtMl9yZWQgJT4lCiAgZmlsdGVyKGZ5bGtlICVpbiUgYygiMDEiLCAiMDIiLCAiMDMiLCAiMTEiLCAiMTIiKSkgJT4lCiAgdW5uZXN0KGMoZnlsa2UpKSAlPiUKICBncm91cF9ieSAoZnlsa2UsIGFhcl9kKSAlPiUKICBzdW1tYXJpc2UobWVhbl9meWxrZSA9IG1lYW4ocmVzaWQpKSAlPiUKICBnZ3Bsb3QoYWVzKHg9YWFyX2QsIHk9bWVhbl9meWxrZSwgY29sb3VyID0gZnlsa2UpKSArCiAgZ2VvbV9saW5lKGx3ZD0xKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3VyID0gImJsYWNrIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKQpgYGAKCgojRHVtbXkgZnlsa2Ugb2cgw6VyCgpWaSBpbm5mw7hyZXIgZW4gZHVtbXkgZm9yIGh2ZXJ0IGZ5bGtlCgpgYGB7cn0KIyBOw6UgaGFyIHZpIGhlbCBwbTIgw6UgYnJ1a2UKbW9kMiA8LSAncG0yIH4gZm5yKmFhcl9mICsgVG90YWxfeWFfcCArIGluY19rMSArIGluY19rNSArIHVuaV9rX21mICsgdW5pX2xfbWYgKyBUcmFkZV9wY18xMDBLJwpgYGAKClZpIGdlbmVyZXJlciBsbSAyIGZyYSBtb2RlbGwgMiBvZyBkYXRhc2V0dGV0IHBtMgoKYGBge3J9CmxtMiA8LSBsbShtb2QyLCBkYXRhID0gcG0yKQpgYGAKCmBgYHtyfQpzdW1tYXJ5KGxtMikKYGBgCgpWaSBsZWdnZXIgaW5uIHJlc2lkdWFsZW5lIGZyYSBsbTIgdGlsIHBtMiBvZyBrYWxsZXIgZGVtIHJlc19tMgoKYGBge3J9CnBtMiA8LSBwbTIgJT4lCiAgbXV0YXRlKHJlc19tMiA9IHJlc2lkKGxtMikpCmBgYAoKVmkgZmlsdHJlciBmeWxrZW5lCgpgYGB7cn0KcG0yICU+JSBmaWx0ZXIoZm5yICVpbiUgYygiMDEiLCAiMDIiLCAiMDQiLCAiMTEiLCAiMTIiKSkgJT4lCmdncGxvdChtYXBwaW5nID0gYWVzKHggPSBhYXJfZCwgeSA9IHJlc19tMikpICsKZ2VvbV9saW5lKGFlcyhncm91cCA9IGtuYXZuKSkgKwpzY2FsZV9zaXplX21hbnVhbCh2YWx1ZXMgPSBjKHNlcSgyLjAsIDAuNSwgYnkgPSAtMC4xKSkpICsKZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCkgKwp0aGVtZShsZWdlbmQucG9zaXRpb24gPSAnYm90dG9tJykgKwogIGZhY2V0X3dyYXAofmZ5bGtlKQpgYGAKCmkuICBrdmFsaXRldGVuIHDDpSBtb2RlbGwgMiA/CgppaS4gZXIgZGV0IGdydW5uIHRpbCDDpSBtaXN0ZW5rZSBhdCB2aSBtYW5nbGVyIHZhcmlhYmxlci4gamEgdmkgbWlzdGVua2VyIGRldHRlLgoKVmkgZmlsdHJlcmVyIG1lZCBoZW5zeW4gcMOlIGZ5bGtlICIxMSIKCmBgYHtyfQpwbTIgJT4lIGZpbHRlcihmbnIgJWluJSBjKCIxMSIpKSAlPiUKZ2dwbG90KG1hcHBpbmcgPSBhZXMoeCA9IGFhcl9kLCB5ID0gcmVzX20yKSkgKwpzY2FsZV9jb2xvcl92aXJpZGlzKGRpc2NyZXRlID0gVFJVRSwgb3B0aW9uID0gIkQiKSArCmdlb21fbGluZShhZXMoZ3JvdXAgPSBrbmF2biwgY29sb3VyID0ga25hdm4sIHNpemUgPSBrbmF2bikpICsKc2NhbGVfc2l6ZV9tYW51YWwodmFsdWVzID0gYyhzZXEoMi4wLCAwLjUsIGJ5ID0gLTAuMSkpKSArCmdlb21faGxpbmUoeWludGVyY2VwdCA9IDApICsKdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gJ2JvdHRvbScpCmBgYAoKVmkgZ2plbnRhciBwbG90dGV0IG92ZW5mb3IgbWVkIHV0dmFsZ3RlIGtvbW11bmVyCgpgYGB7cn0KcG0yICU+JSBmaWx0ZXIoa25yICVpbiUgYygiMTExOSIsICIxMTIwIiwgIjExMjciLCAiMTEyMSIsICIxMTMwIiwgIjExMzUiLCAiMTEwNiIsICIxMTQ5IikpICU+JQpnZ3Bsb3QobWFwcGluZyA9IGFlcyh4ID0gYWFyX2QsIHkgPSByZXNfbTIpKSArCnNjYWxlX2NvbG9yX3ZpcmlkaXMoZGlzY3JldGUgPSBUUlVFLCBvcHRpb24gPSAiQSIpICsKZ2VvbV9saW5lKGFlcyhncm91cCA9IGtuYXZuLCBjb2xvdXIgPSBrbmF2biwgc2l6ZSA9a25hdm4pKSArCnNjYWxlX3NpemVfbWFudWFsKHZhbHVlcyA9IGMoc2VxKDIuMCwgMC41LCBieSA9IC0wLjEpKSkgKwpnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwKSArCnRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICdib3R0b20nKQpgYGAKCkRldCBzb20ga2plbm5ldGVnbmVyIGtvbW11bmVuZSBpIFJvZ2xhbmQgZXIgYXQgaSBTdGF2YW5nZXIgYmxpciBvdmVydnVyZGVydAoKI01vZGVsbCBmb3IgaHZlcnQgw6VyCgppLiAgCgpgYGB7cn0KcG0yX24gPC0gcG0yICU+JSAKIyB2ZWxnZXIgZsO4cnN0IHZhcmlhYmxlbmUuIFRhciBtZWQgYWFyX2QKICAgc2VsZWN0KHBtMiwgZm5yLCBrbnIsIGFhciwgYWFyX2YsIGFhcl9kLCBNZW5uX3lhX3AsIAogICAgICAgICAgS3Zpbm5lcl95YV9wLCBUb3RhbF95YV9wLCBpbmNfazEsIGluY19rNSwgdW5pX2tfbWYsIAogICAgICAgICAgdW5pX2xfbWYsIFRyYWRlX3BjXzEwMEspICU+JSAKICAjIGdydXBwZXJlciBtaHQuIGFhcl9kIHNvbSBlciBkYXRlIG9iamVjdAogIGdyb3VwX2J5KGFhcl9kKSAlPiUKICBuZXN0KCkKYGBgCgpgYGB7cn0KcG0yX24KYGBgCgpgYGB7cn0KIyBTZXIgYnJhIHV0IDstKQpwbTJfbiRkYXRhW1sxXV0gJT4lCiBoZWFkKG4gPSA1KQpgYGAKCmBgYHtyfQpkaW0ocG0yX24pCmBgYAprb20gbW9kZWxsCmBgYHtyfQojIG3DpSBicnVrZSBhX2RmIGkgZnVua3Nqb25lbiBlbGxlcnMgdmlsIGRlbiBhbGx0aWQgYnJ1a2UgcG0yCmtvbV9tb2RlbCA8LSBmdW5jdGlvbihhX2RmKSB7CiAgIGxtKHBtMiB+IGZuciArIFRvdGFsX3lhX3AgKyBpbmNfazEgKyBpbmNfazUgKyB1bmlfa19tZiArIHVuaV9sX21mICsgVHJhZGVfcGNfMTAwSywgZGF0YSA9IGFfZGYpCn0KYGBgCgpgYGB7cn0KcG0yX24gPC0gcG0yX24gJT4lIAogICBtdXRhdGUobW9kZWwgPSBtYXAoZGF0YSwgLmYgPSBrb21fbW9kZWwpKSAKYGBgCgpgYGB7cn0KIyBrb21fbW9kZWwocG0yX24kYWFyKSAlPiUgCiMgICAgc3VtbWFyeSgpCmBgYAoKNS4gCmBgYHtyfQoKYGBgCgpgYGB7cn0KbW9kX3N1bSA8LSBwbTJfbiAlPiUgCiAgIyBIYXIgYmFyZSBkaXNzZSDDpXJlbmUgc8OlIHVuw7hkdmVuZGlnCiAgICMgZmlsdGVyKGFhciAlaW4lIGMoIjIwMDgiLCAiMjAwOSIsICIyMDEwIiwgIjIwMTEiLCAiMjAxMiIsICIyMDEzIiwgIjIwMTQiLCAiMjAxNSIsICIyMDE2IiwgIjIwMTciKSkgJT4lIAogICBtdXRhdGUobW9kX3N1bW1hcnkgPSBtYXAoLnggPSBtb2RlbCwgLmYgPSBnbGFuY2UpKSAlPiUgCiAgIHVubmVzdChtb2Rfc3VtbWFyeSkgJT4lIAogICBwcmludCgpCmBgYAoKYGBge3J9CmNvZWZfZGYgPC0gbW9kX3N1bSRtb2RlbCAlPiUgCiAgIyAxIHBsdWtrZXIgdXQga29lZmZpc2llbnRlbmUKICAgbWFwX2RmKDEpICU+JSAKICAjIGxlZ2dlcyBpIGVuIHRpYmJsZSAKICAgdGliYmxlKCkKYGBgCg==
>>>>>>> 13a7866c22d770944d875877fc063cabaa2f5186 =======
LS0tCnRpdGxlOiAiTW9kZWxsZXIiCkF1dG9yOiBBbm4gRWxpc2FidGggYW5kIEhlaWRpIApvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpgYGB7cn0Kc3VwcHJlc3NQYWNrYWdlU3RhcnR1cE1lc3NhZ2VzKHsKICBsaWJyYXJ5KHRpZHl2ZXJzZSkKICBsaWJyYXJ5KGx1YnJpZGF0ZSkKICBsaWJyYXJ5KG1vZGVscikKICBsaWJyYXJ5KGJyb29tKQogIGxpYnJhcnkobG10ZXN0KQogIGxpYnJhcnkoc2FuZHdpY2gpCiAgbGlicmFyeSh2aXJpZGlzKQp9KQpgYGAKCmBgYHtyIExlcyBpbm4gZmlsfQpwbTIgPC0gcmVhZF9jc3YoImRhdGEvcG0yLmNzdiIsIHNob3dfY29sX3R5cGVzID0gRkFMU0UpCmBgYAoKYGBge3J9CnBtMiA8LSBwbTIgJT4lIAogIG11dGF0ZSgKICAgIGZuciA9IHN0cl9zdWIoa25yLCAxLDIpLAogICAgYWFyX2YgPSBzdHJfc3ViKGFhcikKICApCmBgYAoKYGBge3IgT3ZlcnNpa3RlbiBvdmVyIHZhcmlhYmxlbmUgaSBwbTJ9CmhlYWQocG0yKQpgYGAKCmBgYHtyIFBhcnNlIGZhY3Rvcn0KcG0yICU+JSAKICBtdXRhdGUoCiAgICBmbnIgPSBwYXJzZV9mYWN0b3IoZm5yLCBsZXZlbHMgPSBmbnIpLAogICAgYWFyX2YgPSBwYXJzZV9mYWN0b3IoYWFyX2YsIGxldmVscyA9IGFhcl9mKQogICkKYGBgCgpgYGB7cn0KcG0yIDwtIHBtMiAlPiUgCiAgbXV0YXRlKAogICAgVHJhZGVfcGNfMTAwSyA9IFRyYWRlX3AvMTAwMDAwCiAgKSAKYGBgCgpgYGB7ciBPdmVyc2lrdH0KaGVhZChwbTIsIG4gPSA0KQpgYGAKCmBgYHtyIFRhYmVsbCAxfQp0aWJibGUoImtuciIsICJmbnIiLCAiYWFyX2YiLCAiVHJhZGVfcGNfMTAwayIpCmBgYAoKI01vZGVsbAoKYGBge3IgTW9kZWxsfQptb2QxIDwtICdwbTIgfiBhYXJfZiArIFRvdGFsX3lhX3AgKyBpbmNfazEgKyBpbmNfazUgKyB1bmlfa19tZiArIHVuaV9sX21mICsgVHJhZGVfcGNfMTAwSycKYGBgCgpgYGB7ciBHZW5lcmVyZXIgbG0gfQpsbTEgPC0gbG0obW9kMSwgZGF0YSA9IHBtMiwgc3Vic2V0ID0gY29tcGxldGUuY2FzZXMocG0yKSkKYGBgCgpWaSBsZWdnZXIgaW5uIHJlc2lkdWFsZW5lIGZyYSBkZW4gbGluw6ZyZSBtb2RlbGxlbgoKYGBge3IgUmVzaWR1YWxlcn0KcG0yICU+JSAKYWRkX3Jlc2lkdWFscyhsbTEpCmhlYWQocG0yLCBuID0gNCkKYGBgCgpgYGB7ciBPcHBzdW1tZXJpbmd9CnN1bW1hcnkobG0xKQpgYGAKdXQgaSBmcmEgdmVyZGllbiBww6Ugw6VycyBrb2VmZmlzaWVudGVuZSBrYW4gdmkgbGVzZSBhdCBkZXQgZXIgZW4gw7hrbmluZyBww6UgbywxJSBmcmEgMjAxMCB0aWwgMjAxNy4gdmkgc2VyIGVuIMO4a25pbmcgZnJhIMOlciB0aWwgw6VyLiAKCnV0IGkgZnJhIHbDpXIga3VubnNrYXAgZXIgdmkgZW5pZ2Ugb20gYXQgZGUgZXIgc29tIGZvcnZlbnRldCAKCkhldGVyb3NrZWRhc3Rpc2l0ZXQKYGBge3J9CmJwdGVzdChsbTEpCmBgYAoKSmEgdmkgaGFyIHByb2JsZW1lciBtZWQgaGV0ZXJvc2tlZGFzaXRldGVuIGhlciBwZ2EgYXQgdmVyZGllbiBlciBmb3IKaMO4eS4KClJhcHBvcnRlcmUgcm9idXN0ZSBzdGFuZGFyZCBmZWlsIG9nIHRpbGjDuHJlbmRlIHJvYnVzdGUgdC12ZXJkaWVyCgpgYGB7cn0KY29lZnRlc3QobG0xKQpgYGAKCmBgYHtyfQp2Y292SEMobG0xKQpgYGAKCkZseXR0ZXIgcmVzaWR1YWxlbmUgZnJhIGxtMSB0aWwgZGF0YXNldHRldCBwbTIKCmBgYHtyfQpwbTIgPC0gcG0yICU+JQogIGFkZF9yZXNpZHVhbHMobG0xKQpgYGAKCgpsYWdlciBueSB2YXJpYWJlbAoKYGBge3J9CnBtMiA8LSBwbTIgJT4lCm11dGF0ZShhYXJfZCA9IG1ha2VfZGF0ZShhYXIpKQpgYGAKClZpIGZpbHRlcmVyIHV0IGZ5bGtlbmUgw5hzdGZvbGQsIEFrZXJzaHVzLCBPc2xvLCBSb2dhbGFuZCBvZyBIb3JkYWxhbmQKCmBgYHtyfQpwbTIgPC0gcG0yICU+JQptdXRhdGUoZnlsa2UgPSBzdWJzdHIoa25yLCBzdGFydCA9IDEsIHN0b3AgPSAyKSkKYGBgCgpgYGB7cn0KcG0yX3JlZCA8LSBwbTIgJT4lIAogIGZpbHRlcihmeWxrZSAlaW4lIGMoIjAxIiwgIjAyIiwgIjAzIiwgIjExIiwgIjEyIikpCmBgYAoKT3BwZ2F2ZSA3IHRpbCAxMAoKYGBge3J9CiMgcG0yX3JlZCAlPiUgCiMgICB1bm5lc3QoYyhmeWxrZSkpICU+JSAKIyAgIGdyb3VwX2J5KGZ5bGtlLCBhYXJfZCkgJT4lIAojICAgc3VtbWFyaXNlKG1lYW5fZnlsa2UgPSBtZWFuKHJlc2lkKSkgJT4lIAojICAgZ2dwbG90KG1hcHBpbmcgPSBhZXMoeCA9IGFhcl9kLCB5ID0gbWVhbl9meWxrZSwgY29sb3VyID0gZnlsa2UpKSArCiMgICBnZW9tX2xpbmUobHdkID0gMSkgKwojICAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3VyID0gIndoaXRlIikgKwojICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpCmBgYAoKYGBge3J9CnBtMl9yZWQgJT4lCiAgZmlsdGVyKGZ5bGtlICVpbiUgYygiMDEiLCAiMDIiLCAiMDMiLCAiMTEiLCAiMTIiKSkgJT4lCiAgdW5uZXN0KGMoZnlsa2UpKSAlPiUKICBncm91cF9ieSAoZnlsa2UsIGFhcl9kKSAlPiUKICBzdW1tYXJpc2UobWVhbl9meWxrZSA9IG1lYW4ocmVzaWQpKSAlPiUKICBnZ3Bsb3QoYWVzKHg9YWFyX2QsIHk9bWVhbl9meWxrZSwgY29sb3VyID0gZnlsa2UpKSArCiAgZ2VvbV9saW5lKGx3ZD0xKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3VyID0gImJsYWNrIikgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKQpgYGAKCgojRHVtbXkgZnlsa2Ugb2cgw6VyCgpWaSBpbm5mw7hyZXIgZW4gZHVtbXkgZm9yIGh2ZXJ0IGZ5bGtlCgpgYGB7cn0KIyBOw6UgaGFyIHZpIGhlbCBwbTIgw6UgYnJ1a2UKbW9kMiA8LSAncG0yIH4gZm5yKmFhcl9mICsgVG90YWxfeWFfcCArIGluY19rMSArIGluY19rNSArIHVuaV9rX21mICsgdW5pX2xfbWYgKyBUcmFkZV9wY18xMDBLJwpgYGAKClZpIGdlbmVyZXJlciBsbSAyIGZyYSBtb2RlbGwgMiBvZyBkYXRhc2V0dGV0IHBtMgoKYGBge3J9CmxtMiA8LSBsbShtb2QyLCBkYXRhID0gcG0yKQpgYGAKCmBgYHtyfQpzdW1tYXJ5KGxtMikKYGBgCgpWaSBsZWdnZXIgaW5uIHJlc2lkdWFsZW5lIGZyYSBsbTIgdGlsIHBtMiBvZyBrYWxsZXIgZGVtIHJlc19tMgoKYGBge3J9CnBtMiA8LSBwbTIgJT4lCiAgbXV0YXRlKHJlc19tMiA9IHJlc2lkKGxtMikpCmBgYAoKVmkgZmlsdHJlciBmeWxrZW5lCgpgYGB7cn0KcG0yICU+JSBmaWx0ZXIoZm5yICVpbiUgYygiMDEiLCAiMDIiLCAiMDQiLCAiMTEiLCAiMTIiKSkgJT4lCmdncGxvdChtYXBwaW5nID0gYWVzKHggPSBhYXJfZCwgeSA9IHJlc19tMikpICsKZ2VvbV9saW5lKGFlcyhncm91cCA9IGtuYXZuKSkgKwpzY2FsZV9zaXplX21hbnVhbCh2YWx1ZXMgPSBjKHNlcSgyLjAsIDAuNSwgYnkgPSAtMC4xKSkpICsKZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCkgKwp0aGVtZShsZWdlbmQucG9zaXRpb24gPSAnYm90dG9tJykgKwogIGZhY2V0X3dyYXAofmZ5bGtlKQpgYGAKCmkuICBrdmFsaXRldGVuIHDDpSBtb2RlbGwgMiA/CgppaS4gZXIgZGV0IGdydW5uIHRpbCDDpSBtaXN0ZW5rZSBhdCB2aSBtYW5nbGVyIHZhcmlhYmxlci4gamEgdmkgbWlzdGVua2VyIGRldHRlLgoKVmkgZmlsdHJlcmVyIG1lZCBoZW5zeW4gcMOlIGZ5bGtlICIxMSIKCmBgYHtyfQpwbTIgJT4lIGZpbHRlcihmbnIgJWluJSBjKCIxMSIpKSAlPiUKZ2dwbG90KG1hcHBpbmcgPSBhZXMoeCA9IGFhcl9kLCB5ID0gcmVzX20yKSkgKwpzY2FsZV9jb2xvcl92aXJpZGlzKGRpc2NyZXRlID0gVFJVRSwgb3B0aW9uID0gIkQiKSArCmdlb21fbGluZShhZXMoZ3JvdXAgPSBrbmF2biwgY29sb3VyID0ga25hdm4sIHNpemUgPSBrbmF2bikpICsKc2NhbGVfc2l6ZV9tYW51YWwodmFsdWVzID0gYyhzZXEoMi4wLCAwLjUsIGJ5ID0gLTAuMSkpKSArCmdlb21faGxpbmUoeWludGVyY2VwdCA9IDApICsKdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gJ2JvdHRvbScpCmBgYAoKVmkgZ2plbnRhciBwbG90dGV0IG92ZW5mb3IgbWVkIHV0dmFsZ3RlIGtvbW11bmVyCgpgYGB7cn0KcG0yICU+JSBmaWx0ZXIoa25yICVpbiUgYygiMTExOSIsICIxMTIwIiwgIjExMjciLCAiMTEyMSIsICIxMTMwIiwgIjExMzUiLCAiMTEwNiIsICIxMTQ5IikpICU+JQpnZ3Bsb3QobWFwcGluZyA9IGFlcyh4ID0gYWFyX2QsIHkgPSByZXNfbTIpKSArCnNjYWxlX2NvbG9yX3ZpcmlkaXMoZGlzY3JldGUgPSBUUlVFLCBvcHRpb24gPSAiQSIpICsKZ2VvbV9saW5lKGFlcyhncm91cCA9IGtuYXZuLCBjb2xvdXIgPSBrbmF2biwgc2l6ZSA9a25hdm4pKSArCnNjYWxlX3NpemVfbWFudWFsKHZhbHVlcyA9IGMoc2VxKDIuMCwgMC41LCBieSA9IC0wLjEpKSkgKwpnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwKSArCnRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICdib3R0b20nKQpgYGAKCkRldCBzb20ga2plbm5ldGVnbmVyIGtvbW11bmVuZSBpIFJvZ2xhbmQgZXIgYXQgaSBTdGF2YW5nZXIgYmxpciBvdmVydnVyZGVydAoKI01vZGVsbCBmb3IgaHZlcnQgw6VyCgppLiAgCgpgYGB7cn0KcG0yX24gPC0gcG0yICU+JSAKIyB2ZWxnZXIgZsO4cnN0IHZhcmlhYmxlbmUuIFRhciBtZWQgYWFyX2QKICAgc2VsZWN0KHBtMiwgZm5yLCBrbnIsIGFhciwgYWFyX2YsIGFhcl9kLCBNZW5uX3lhX3AsIAogICAgICAgICAgS3Zpbm5lcl95YV9wLCBUb3RhbF95YV9wLCBpbmNfazEsIGluY19rNSwgdW5pX2tfbWYsIAogICAgICAgICAgdW5pX2xfbWYsIFRyYWRlX3BjXzEwMEspICU+JSAKICAjIGdydXBwZXJlciBtaHQuIGFhcl9kIHNvbSBlciBkYXRlIG9iamVjdAogIGdyb3VwX2J5KGFhcl9kKSAlPiUKICBuZXN0KCkKYGBgCgpgYGB7cn0KcG0yX24KYGBgCgpgYGB7cn0KIyBTZXIgYnJhIHV0IDstKQpwbTJfbiRkYXRhW1sxXV0gJT4lCiBoZWFkKG4gPSA1KQpgYGAKCmBgYHtyfQpkaW0ocG0yX24pCmBgYAprb20gbW9kZWxsCmBgYHtyfQojIG3DpSBicnVrZSBhX2RmIGkgZnVua3Nqb25lbiBlbGxlcnMgdmlsIGRlbiBhbGx0aWQgYnJ1a2UgcG0yCmtvbV9tb2RlbCA8LSBmdW5jdGlvbihhX2RmKSB7CiAgIGxtKHBtMiB+IGZuciArIFRvdGFsX3lhX3AgKyBpbmNfazEgKyBpbmNfazUgKyB1bmlfa19tZiArIHVuaV9sX21mICsgVHJhZGVfcGNfMTAwSywgZGF0YSA9IGFfZGYpCn0KYGBgCgpgYGB7cn0KcG0yX24gPC0gcG0yX24gJT4lIAogICBtdXRhdGUobW9kZWwgPSBtYXAoZGF0YSwgLmYgPSBrb21fbW9kZWwpKSAKYGBgCgpgYGB7cn0KIyBrb21fbW9kZWwocG0yX24kYWFyKSAlPiUgCiMgICAgc3VtbWFyeSgpCmBgYAoKNS4gCmBgYHtyfQoKYGBgCgpgYGB7cn0KbW9kX3N1bSA8LSBwbTJfbiAlPiUgCiAgIyBIYXIgYmFyZSBkaXNzZSDDpXJlbmUgc8OlIHVuw7hkdmVuZGlnCiAgICMgZmlsdGVyKGFhciAlaW4lIGMoIjIwMDgiLCAiMjAwOSIsICIyMDEwIiwgIjIwMTEiLCAiMjAxMiIsICIyMDEzIiwgIjIwMTQiLCAiMjAxNSIsICIyMDE2IiwgIjIwMTciKSkgJT4lIAogICBtdXRhdGUobW9kX3N1bW1hcnkgPSBtYXAoLnggPSBtb2RlbCwgLmYgPSBnbGFuY2UpKSAlPiUgCiAgIHVubmVzdChtb2Rfc3VtbWFyeSkgJT4lIAogICBwcmludCgpCmBgYAoKYGBge3J9CmNvZWZfZGYgPC0gbW9kX3N1bSRtb2RlbCAlPiUgCiAgIyAxIHBsdWtrZXIgdXQga29lZmZpc2llbnRlbmUKICAgbWFwX2RmKDEpICU+JSAKICAjIGxlZ2dlcyBpIGVuIHRpYmJsZSAKICAgdGliYmxlKCkKYGBgCg==
>>>>>>> 9d191ee1d48e508193ed3703a38d953fa7f54d64